char [ ] 的长度
来源:百度知道 编辑:UC知道 时间:2024/06/18 01:11:09
char code[] =
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
"\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00"
"\x00\x00\xcd\x80\xe8\xdb\xff\xff\xff\x4e\x6f\x77\x20\x49\x20\x70\x77\x6e"
"\x20\x79\x6f\x75\x72\x20\x63\x6f\x6d\x70\x75\x74\x65\x72\x00";
printf("%d",strlen(code));
输出是4, 这是代表什么意思呢?长度4bytes?高手指教
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
"\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00"
"\x00\x00\xcd\x80\xe8\xdb\xff\xff\xff\x4e\x6f\x77\x20\x49\x20\x70\x77\x6e"
"\x20\x79\x6f\x75\x72\x20\x63\x6f\x6d\x70\x75\x74\x65\x72\x00";
printf("%d",strlen(code));
输出是4, 这是代表什么意思呢?长度4bytes?高手指教
其实这个和后面的数据都没有关系,注意这一段,在第一个里面的
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
到第五个是\x00 也就是\0结束符,strlen计算字符串长度的时候是以\0结束符作为标志的~ 所以,strlen遇到了那个\x00后,就立即返回长度只有4了..
同理如果你把那个\x00改为\x01的话,他就会遇到后面那个\x00,会返回5..
输出的是数组元素的长度,即是你里面有几个元素。
第一个:
"\xeb\x20\xb8\x04\x00\x00\x00\xbb\x01\x00\x00\x00\x89\xf1\xba\x17"
第二个:
"\x00\x00\x00\xcd\x80\xb8\x01\x00\x00\x00\xbb\x00\x00"
第三个:
"\x00\x00\xcd\x80\xe8\xdb\xff\xff\xff\x4e\x6f\x77\x20\x49\x20\x70\x77\x6e"
第四个:
"\x20\x79\x6f\x75\x72\x20\x63\x6f\x6d\x70\x75\x74\x65\x72\x00";
关于char类型的长度问题
求一个函数:取Char类型的长度
32长度CHAR 转数字
SQL怎么改字段的长度!比如我要把姓名 char(4)改为char(8)应该怎么写!
写出int strlen(char *s)的函数实现求字符串长度.
char *p与 char p[]的区别
在C++中实现一个双下标的字符数组(如char a[ ][ 22]),根据输入的长度来分配空间给那个数组,怎么写代码?
char 'a' 与 char a的区别?
main(int argc, char** argv) 的char** 是什么意思?
char *const p;与 const char * p;的区别